function sal = simplexCiclado(count, N, B, yk,j)
%                   CICLADO
% Subrutina para evitar el ciclado en el Simplex
% Regresa el indice de la variable basica que debe salir
%
% usage:     [sal] = simplexCiclado(count, N, B,j)
%       
%        donde:
%           sal := Indice de la variable basica que sale de la bas
%         count := Arreglo de indices de posibles variables a salir de
%                  la base.
%        [B, N] := Matrices correspoondientes a las variables basicas
%                  y no basicas.
%            yk := vector de la variable no basica que va a entrar a la
%                  base.
%             j := indice de la columna que se va a tomar de la identidad 
%           
%  
%                            - Marcela Maldonado Figueroa -
%                              - Pedro Orozco del Pino -
%                             - Jose Alonso Solis Lemus -
%
fprintf('\n\t Entro a ciclado');
I=eye(size(B));
auxcount=[];
yj=I(:,j);
for i=1:length(count)
    aux = yj(count(i)) / yk(count(i));
    if i == 1
        min = aux;
        auxcount = count(i);
    else
        if min >= aux
            if min == aux
                %sigue habiendo mas de un minimo
                auxcount=[auxcount count(i)];
            else
                min = aux;
                auxcount= [];
                auxcount = count(i);
            end
        end
    end
end
if length(auxcount) > 1
    sal = simplexCiclado(auxcount,N,B,yk,j+1);
else
    sal = auxcount;
end
fprintf('\n\t Salgo ciclado, sale:\t %d', sal);
